//给你一个整数数组 arr，请你帮忙统计数组中每个数的出现次数。
//
// 如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。
//
//
//
// 示例 1：
//
// 输入：arr = [1,2,2,1,1,3]
//输出：true
//解释：在该数组中，1 出现了 3 次，2 出现了 2 次，3 只出现了 1 次。没有两个数的出现次数相同。
//
// 示例 2：
//
// 输入：arr = [1,2]
//输出：false
//
//
// 示例 3：
//
// 输入：arr = [-3,0,1,-3,1,1,1,-3,10,0]
//输出：true
//
//
//
//
// 提示：
//
//
// 1 <= arr.length <= 1000
// -1000 <= arr[i] <= 1000
//
//
// Related Topics 数组与矩阵 哈希表 👍 170 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
function uniqueOccurrences(arr: number[]): boolean {
// [1,1,1,2,2,3]

    arr.sort((a,b) => a - b)
    let set = new Set()
    let count = 1
    // 这里为什么是i < arr.length + 1 因为要避免最后的数字结果不进行set判断 强行使用undefined来进行最后的set.has判断
    for (let i = 1; i < arr.length + 1; i ++) {

        if (arr[i] !== arr[i - 1]) {
            // set中没有就添加撒
            if (!set.has(count)) {
                set.add(count)
                count = 1
            }
            // 有就false撒
            else return false
        }
        else count ++

    }

    return true
};
//leetcode submit region end(Prohibit modification and deletion)
